.\" Copyright (C) 2001 Andries Brouwer <aeb@cwi.nl>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.TH getpagesize 2 2024-05-02 "Linux man-pages 6.9.1"
.SH NAME
getpagesize \- get memory page size
.SH LIBRARY
Standard C library
.RI ( libc ", " \-lc )
.SH SYNOPSIS
.nf
.B #include <unistd.h>
.P
.B int getpagesize(void);
.fi
.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
.P
.BR getpagesize ():
.nf
    Since glibc 2.20:
        _DEFAULT_SOURCE || ! (_POSIX_C_SOURCE >= 200112L)
    glibc 2.12 to glibc 2.19:
        _BSD_SOURCE || ! (_POSIX_C_SOURCE >= 200112L)
    Before glibc 2.12:
        _BSD_SOURCE || _XOPEN_SOURCE >= 500
.\"        || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
.fi
.SH DESCRIPTION
The function
.BR getpagesize ()
returns the number of bytes in a memory page,
where "page" is a fixed-length block,
the unit for memory allocation and file mapping performed by
.BR mmap (2).
.SH VERSIONS
A user program should not hard-code a page size,
neither as a literal nor using the
.B PAGE_SIZE
macro,
because some architectures support multiple page sizes.
.P
This manual page is in section 2 because
Alpha, SPARC, and SPARC64
all have a Linux system call
.BR getpagesize ()
though other architectures do not,
and use the ELF auxiliary vector instead.
.SH STANDARDS
None.
.SH HISTORY
This call first appeared in 4.2BSD.
SVr4, 4.4BSD, SUSv2.
In SUSv2 the
.BR getpagesize ()
call was labeled LEGACY,
and it was removed in POSIX.1-2001.
.P
glibc 2.0 returned a constant
even on architectures with multiple page sizes.
.SH SEE ALSO
.BR mmap (2),
.BR sysconf (3)
